#ifndef NP_RULEMANAGER_H
#define NP_RULEMANAGER_H

#include "Rule.h"

class RuleManager
{
public:
  static RuleManager* getInstance() throw (int);

  /**
    * 从规则管理器中取所需的规则信息
    * @param flag rule 文件名字
    * @param regexName 规则名字
    * @return 返回规则信息
    */
  ruleconfiguration::RegexInfo* getRuleInfo(const std::string& flag, const std::string& regexName);

  /**
    * 以规则名为 key 取规则
    * @param flag 规则名
    * @return 返回规则结构体指针
    */
  Rule* getRule(const std::string& flag);

private:
  RuleManager();
  ~RuleManager();

private:
  /**
    * key 为文件名字，value 为规则
    */
  typedef std::map<std::string, Rule*> RulesMap;
  typedef RulesMap::iterator RulesMapIterator;
  RulesMap m_rules;
};

#endif // NP_RULEMANAGER_H
